package cn.tedu.store.product.webapi.repository;

import cn.tedu.store.commons.pojo.product.vo.BrandListItemVO;
import cn.tedu.store.commons.pojo.product.vo.BrandStandardVO;

import java.util.List;

/**
 * 处理品牌缓存的数据访问接口
 *
 * @author RelentlessFlow
 * @version 0.0.1
 */
public interface IBrandRedisRepository {

    /**
     * 品牌相关数据在Redis中的前缀
     */
    String BRAND_KEY_PREFIX = "brand:";
    /**
     * 品牌数据项在Redis中的Key前缀
     */
    String BRAND_ITEM_KEY_PREFIX = BRAND_KEY_PREFIX + "item:";
    /**
     * 品牌列表在Redis中的Key
     */
    String BRAND_LIST_KEY = BRAND_KEY_PREFIX + "list";
    /**
     * 所有品牌数据的Key
     */
    String BRAND_ALL_KEYS_KEY = BRAND_KEY_PREFIX + "all-keys";

    /**
     * 向Redis中存入品牌信息
     * @param brandStandardVO 品牌信息
     */
    void save(BrandStandardVO brandStandardVO);

    /**
     * 向Redis中存入品牌列表
     * @param brands 品牌列表
     */
    void save(List<BrandListItemVO> brands);

    /**
     * 从Redis中根据id查询品牌详情
     * @param id 品牌id
     * @return 品牌详情
     */
    BrandStandardVO getStandardById(Long id);

    /**
     * 从Redis中查询品牌列表
     * @return 品牌列表
     */
    List<BrandListItemVO> list();

    /**
     * 从Redis中查询指定数量的品牌列表
     * @param start 起始下标
     * @param end 结束下标
     * @return 品牌列表
     */
    List<BrandListItemVO> list(Long start, Long end);

    /**
     * 清除Redis中的所有缓存数据
     */
    void deleteAll();
}
